案例分析
现在有两个分支master 和 ha 分支,假设一开始 master 和 ha 分支中的文件内容都是一致的,而且两个分支的工作区都没有东西需要 add/commit ,此时,我在 master 中修改了文件,修改完成之后,执行 git status 命令我们看到 master 中有东西需要 add/commit ,此时我想切换到 ha 分支中去,但是并不想对 master 分支执行 add/commit ,这个时候我们可以执行如下命令,先将当前分支中的文件储藏起来:
$ git stash |
执行完 git stash 命令之后,再执行 git status ,我们发现此时 master 分支已经是干净的了,此时我们可以切换到 ha 分中,切换到 ha 分支之后,我们发现 master 中的修改并没有干扰到 ha 分支,当我们完成了 ha 分支中的工作之后,再回到 master 分支,此时执行如下命令可以恢复刚刚储藏的数据(表示恢复最近一次储藏):
$ git stash apply |
上面这个命令执行完之后,master 分支中的工作区中的文件就恢复了,此时执行 git status 就可以看到又有数据需要 add/commit 了。上面的过程如下图所示:
我们也可将工作区储藏多次,这个时候我们可以执行如下命令来查看储藏:
$ git stash list |
执行效果如下:
git stash apply 表示恢复最近一次储藏,如果我们想恢复到之前的某一次储藏,可以加上储藏的名字,如下:
$ git stash apply stash@{1} |
还有一些其他的关于储藏的命令:
1. 恢复储藏并出栈
$ git stash pop |
执行效果和 git stash apply 一样,不同的是,这里执行完之后,会将栈顶的储藏移除。
2.删除某一个储藏
$ git stash drop stash@{4} |
最后一个参数是指储藏的名字。
其它文章:
Git 基本操作
Git 分支管理
Git 关联远程仓库GitHub